home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 24 / Amiga Format AFCD24 (Feb 1998, Issue 108).iso / -in_the_mag- / emulation / macos / cpu68000.cpt.hqx / CPU68000 / CPU / cpu8.c < prev    next >
C/C++ Source or Header  |  1997-06-16  |  38KB  |  1,213 lines

  1. #include "sysconfig.h"
  2. #include "sysdeps.h"
  3. #include "config.h"
  4. #include "options.h"
  5. #include "machdep/m68k.h"
  6. #include "my_memory.h"
  7. #include "custom.h"
  8. #include "readcpu.h"
  9. #include "newcpu.h"
  10. #include "compiler.h"
  11. #include "cputbl.h"
  12. #if !defined (MEMFUNCS_DIRECT_REQUESTED) || defined (DIRECT_MEMFUNCS_SUCCESSFUL)
  13. void REGPARAM2 CPU_OP_NAME(_8000)(uae_u32 opcode) /* OR */
  14. {
  15.     uae_u32 srcreg = (opcode & 7);
  16.     uae_u32 dstreg = (opcode >> 9) & 7;
  17. {{    uae_s8 src = m68k_dreg(regs, srcreg);
  18. {    uae_s8 dst = m68k_dreg(regs, dstreg);
  19.     src |= dst;
  20.     VFLG = CFLG = 0;
  21.     ZFLG = ((uae_s8)(src)) == 0;
  22.     NFLG = ((uae_s8)(src)) < 0;
  23.     m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xff) | ((src) & 0xff);
  24. }}}}
  25. void REGPARAM2 CPU_OP_NAME(_8010)(uae_u32 opcode) /* OR */
  26. {
  27.     uae_u32 srcreg = (opcode & 7);
  28.     uae_u32 dstreg = (opcode >> 9) & 7;
  29. {{    uaecptr srca = m68k_areg(regs, srcreg);
  30.     uae_s8 src = get_byte(srca);
  31. {    uae_s8 dst = m68k_dreg(regs, dstreg);
  32.     src |= dst;
  33.     VFLG = CFLG = 0;
  34.     ZFLG = ((uae_s8)(src)) == 0;
  35.     NFLG = ((uae_s8)(src)) < 0;
  36.     m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xff) | ((src) & 0xff);
  37. }}}}
  38. void REGPARAM2 CPU_OP_NAME(_8018)(uae_u32 opcode) /* OR */
  39. {
  40.     uae_u32 srcreg = (opcode & 7);
  41.     uae_u32 dstreg = (opcode >> 9) & 7;
  42. {{    uaecptr srca = m68k_areg(regs, srcreg);
  43.     uae_s8 src = get_byte(srca);
  44. {    m68k_areg(regs, srcreg) += areg_byteinc[srcreg];
  45. {    uae_s8 dst = m68k_dreg(regs, dstreg);
  46.     src |= dst;
  47.     VFLG = CFLG = 0;
  48.     ZFLG = ((uae_s8)(src)) == 0;
  49.     NFLG = ((uae_s8)(src)) < 0;
  50.     m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xff) | ((src) & 0xff);
  51. }}}}}
  52. void REGPARAM2 CPU_OP_NAME(_8020)(uae_u32 opcode) /* OR */
  53. {
  54.     uae_u32 srcreg = (opcode & 7);
  55.     uae_u32 dstreg = (opcode >> 9) & 7;
  56. {{    m68k_areg(regs, srcreg) -= areg_byteinc[srcreg];
  57. {    uaecptr srca = m68k_areg(regs, srcreg);
  58.     uae_s8 src = get_byte(srca);
  59. {    uae_s8 dst = m68k_dreg(regs, dstreg);
  60.     src |= dst;
  61.     VFLG = CFLG = 0;
  62.     ZFLG = ((uae_s8)(src)) == 0;
  63.     NFLG = ((uae_s8)(src)) < 0;
  64.     m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xff) | ((src) & 0xff);
  65. }}}}}
  66. void REGPARAM2 CPU_OP_NAME(_8028)(uae_u32 opcode) /* OR */
  67. {
  68.     uae_u32 srcreg = (opcode & 7);
  69.     uae_u32 dstreg = (opcode >> 9) & 7;
  70. {{    uaecptr srca = m68k_areg(regs, srcreg) + (uae_s32)(uae_s16)nextiword();
  71.     uae_s8 src = get_byte(srca);
  72. {    uae_s8 dst = m68k_dreg(regs, dstreg);
  73.     src |= dst;
  74.     VFLG = CFLG = 0;
  75.     ZFLG = ((uae_s8)(src)) == 0;
  76.     NFLG = ((uae_s8)(src)) < 0;
  77.     m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xff) | ((src) & 0xff);
  78. }}}}
  79. void REGPARAM2 CPU_OP_NAME(_8030)(uae_u32 opcode) /* OR */
  80. {
  81.     uae_u32 srcreg = (opcode & 7);
  82.     uae_u32 dstreg = (opcode >> 9) & 7;
  83. {{    uaecptr srca = get_disp_ea(m68k_areg(regs, srcreg));
  84. {    uae_s8 src = get_byte(srca);
  85. {    uae_s8 dst = m68k_dreg(regs, dstreg);
  86.     src |= dst;
  87.     VFLG = CFLG = 0;
  88.     ZFLG = ((uae_s8)(src)) == 0;
  89.     NFLG = ((uae_s8)(src)) < 0;
  90.     m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xff) | ((src) & 0xff);
  91. }}}}}
  92. void REGPARAM2 CPU_OP_NAME(_8038)(uae_u32 opcode) /* OR */
  93. {
  94.     uae_u32 dstreg = (opcode >> 9) & 7;
  95. {{    uaecptr srca = (uae_s32)(uae_s16)nextiword();
  96.     uae_s8 src = get_byte(srca);
  97. {    uae_s8 dst = m68k_dreg(regs, dstreg);
  98.     src |= dst;
  99.     VFLG = CFLG = 0;
  100.     ZFLG = ((uae_s8)(src)) == 0;
  101.     NFLG = ((uae_s8)(src)) < 0;
  102.     m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xff) | ((src) & 0xff);
  103. }}}}
  104. void REGPARAM2 CPU_OP_NAME(_8039)(uae_u32 opcode) /* OR */
  105. {
  106.     uae_u32 dstreg = (opcode >> 9) & 7;
  107. {{    uaecptr srca = nextilong();
  108.     uae_s8 src = get_byte(srca);
  109. {    uae_s8 dst = m68k_dreg(regs, dstreg);
  110.     src |= dst;
  111.     VFLG = CFLG = 0;
  112.     ZFLG = ((uae_s8)(src)) == 0;
  113.     NFLG = ((uae_s8)(src)) < 0;
  114.     m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xff) | ((src) & 0xff);
  115. }}}}
  116. void REGPARAM2 CPU_OP_NAME(_803a)(uae_u32 opcode) /* OR */
  117. {
  118.     uae_u32 dstreg = (opcode >> 9) & 7;
  119. {{    uaecptr srca = m68k_getpc();
  120.     srca += (uae_s32)(uae_s16)nextiword();
  121. {    uae_s8 src = get_byte(srca);
  122. {    uae_s8 dst = m68k_dreg(regs, dstreg);
  123.     src |= dst;
  124.     VFLG = CFLG = 0;
  125.     ZFLG = ((uae_s8)(src)) == 0;
  126.     NFLG = ((uae_s8)(src)) < 0;
  127.     m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xff) | ((src) & 0xff);
  128. }}}}}
  129. void REGPARAM2 CPU_OP_NAME(_803b)(uae_u32 opcode) /* OR */
  130. {
  131.     uae_u32 dstreg = (opcode >> 9) & 7;
  132. {{    uaecptr srca = get_disp_ea(m68k_getpc());
  133. {    uae_s8 src = get_byte(srca);
  134. {    uae_s8 dst = m68k_dreg(regs, dstreg);
  135.     src |= dst;
  136.     VFLG = CFLG = 0;
  137.     ZFLG = ((uae_s8)(src)) == 0;
  138.     NFLG = ((uae_s8)(src)) < 0;
  139.     m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xff) | ((src) & 0xff);
  140. }}}}}
  141. void REGPARAM2 CPU_OP_NAME(_803c)(uae_u32 opcode) /* OR */
  142. {
  143.     uae_u32 dstreg = (opcode >> 9) & 7;
  144. {{    uae_s8 src = nextibyte();
  145. {    uae_s8 dst = m68k_dreg(regs, dstreg);
  146.     src |= dst;
  147.     VFLG = CFLG = 0;
  148.     ZFLG = ((uae_s8)(src)) == 0;
  149.     NFLG = ((uae_s8)(src)) < 0;
  150.     m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xff) | ((src) & 0xff);
  151. }}}}
  152. void REGPARAM2 CPU_OP_NAME(_8040)(uae_u32 opcode) /* OR */
  153. {
  154.     uae_u32 srcreg = (opcode & 7);
  155.     uae_u32 dstreg = (opcode >> 9) & 7;
  156. {{    uae_s16 src = m68k_dreg(regs, srcreg);
  157. {    uae_s16 dst = m68k_dreg(regs, dstreg);
  158.     src |= dst;
  159.     VFLG = CFLG = 0;
  160.     ZFLG = ((uae_s16)(src)) == 0;
  161.     NFLG = ((uae_s16)(src)) < 0;
  162.     m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xffff) | ((src) & 0xffff);
  163. }}}}
  164. void REGPARAM2 CPU_OP_NAME(_8050)(uae_u32 opcode) /* OR */
  165. {
  166.     uae_u32 srcreg = (opcode & 7);
  167.     uae_u32 dstreg = (opcode >> 9) & 7;
  168. {{    uaecptr srca = m68k_areg(regs, srcreg);
  169.     uae_s16 src = get_word(srca);
  170. {    uae_s16 dst = m68k_dreg(regs, dstreg);
  171.     src |= dst;
  172.     VFLG = CFLG = 0;
  173.     ZFLG = ((uae_s16)(src)) == 0;
  174.     NFLG = ((uae_s16)(src)) < 0;
  175.     m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xffff) | ((src) & 0xffff);
  176. }}}}
  177. void REGPARAM2 CPU_OP_NAME(_8058)(uae_u32 opcode) /* OR */
  178. {
  179.     uae_u32 srcreg = (opcode & 7);
  180.     uae_u32 dstreg = (opcode >> 9) & 7;
  181. {{    uaecptr srca = m68k_areg(regs, srcreg);
  182.     uae_s16 src = get_word(srca);
  183. {    m68k_areg(regs, srcreg) += 2;
  184. {    uae_s16 dst = m68k_dreg(regs, dstreg);
  185.     src |= dst;
  186.     VFLG = CFLG = 0;
  187.     ZFLG = ((uae_s16)(src)) == 0;
  188.     NFLG = ((uae_s16)(src)) < 0;
  189.     m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xffff) | ((src) & 0xffff);
  190. }}}}}
  191. void REGPARAM2 CPU_OP_NAME(_8060)(uae_u32 opcode) /* OR */
  192. {
  193.     uae_u32 srcreg = (opcode & 7);
  194.     uae_u32 dstreg = (opcode >> 9) & 7;
  195. {{    m68k_areg(regs, srcreg) -= 2;
  196. {    uaecptr srca = m68k_areg(regs, srcreg);
  197.     uae_s16 src = get_word(srca);
  198. {    uae_s16 dst = m68k_dreg(regs, dstreg);
  199.     src |= dst;
  200.     VFLG = CFLG = 0;
  201.     ZFLG = ((uae_s16)(src)) == 0;
  202.     NFLG = ((uae_s16)(src)) < 0;
  203.     m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xffff) | ((src) & 0xffff);
  204. }}}}}
  205. void REGPARAM2 CPU_OP_NAME(_8068)(uae_u32 opcode) /* OR */
  206. {
  207.     uae_u32 srcreg = (opcode & 7);
  208.     uae_u32 dstreg = (opcode >> 9) & 7;
  209. {{    uaecptr srca = m68k_areg(regs, srcreg) + (uae_s32)(uae_s16)nextiword();
  210.     uae_s16 src = get_word(srca);
  211. {    uae_s16 dst = m68k_dreg(regs, dstreg);
  212.     src |= dst;
  213.     VFLG = CFLG = 0;
  214.     ZFLG = ((uae_s16)(src)) == 0;
  215.     NFLG = ((uae_s16)(src)) < 0;
  216.     m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xffff) | ((src) & 0xffff);
  217. }}}}
  218. void REGPARAM2 CPU_OP_NAME(_8070)(uae_u32 opcode) /* OR */
  219. {
  220.     uae_u32 srcreg = (opcode & 7);
  221.     uae_u32 dstreg = (opcode >> 9) & 7;
  222. {{    uaecptr srca = get_disp_ea(m68k_areg(regs, srcreg));
  223. {    uae_s16 src = get_word(srca);
  224. {    uae_s16 dst = m68k_dreg(regs, dstreg);
  225.     src |= dst;
  226.     VFLG = CFLG = 0;
  227.     ZFLG = ((uae_s16)(src)) == 0;
  228.     NFLG = ((uae_s16)(src)) < 0;
  229.     m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xffff) | ((src) & 0xffff);
  230. }}}}}
  231. void REGPARAM2 CPU_OP_NAME(_8078)(uae_u32 opcode) /* OR */
  232. {
  233.     uae_u32 dstreg = (opcode >> 9) & 7;
  234. {{    uaecptr srca = (uae_s32)(uae_s16)nextiword();
  235.     uae_s16 src = get_word(srca);
  236. {    uae_s16 dst = m68k_dreg(regs, dstreg);
  237.     src |= dst;
  238.     VFLG = CFLG = 0;
  239.     ZFLG = ((uae_s16)(src)) == 0;
  240.     NFLG = ((uae_s16)(src)) < 0;
  241.     m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xffff) | ((src) & 0xffff);
  242. }}}}
  243. void REGPARAM2 CPU_OP_NAME(_8079)(uae_u32 opcode) /* OR */
  244. {
  245.     uae_u32 dstreg = (opcode >> 9) & 7;
  246. {{    uaecptr srca = nextilong();
  247.     uae_s16 src = get_word(srca);
  248. {    uae_s16 dst = m68k_dreg(regs, dstreg);
  249.     src |= dst;
  250.     VFLG = CFLG = 0;
  251.     ZFLG = ((uae_s16)(src)) == 0;
  252.     NFLG = ((uae_s16)(src)) < 0;
  253.     m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xffff) | ((src) & 0xffff);
  254. }}}}
  255. void REGPARAM2 CPU_OP_NAME(_807a)(uae_u32 opcode) /* OR */
  256. {
  257.     uae_u32 dstreg = (opcode >> 9) & 7;
  258. {{    uaecptr srca = m68k_getpc();
  259.     srca += (uae_s32)(uae_s16)nextiword();
  260. {    uae_s16 src = get_word(srca);
  261. {    uae_s16 dst = m68k_dreg(regs, dstreg);
  262.     src |= dst;
  263.     VFLG = CFLG = 0;
  264.     ZFLG = ((uae_s16)(src)) == 0;
  265.     NFLG = ((uae_s16)(src)) < 0;
  266.     m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xffff) | ((src) & 0xffff);
  267. }}}}}
  268. void REGPARAM2 CPU_OP_NAME(_807b)(uae_u32 opcode) /* OR */
  269. {
  270.     uae_u32 dstreg = (opcode >> 9) & 7;
  271. {{    uaecptr srca = get_disp_ea(m68k_getpc());
  272. {    uae_s16 src = get_word(srca);
  273. {    uae_s16 dst = m68k_dreg(regs, dstreg);
  274.     src |= dst;
  275.     VFLG = CFLG = 0;
  276.     ZFLG = ((uae_s16)(src)) == 0;
  277.     NFLG = ((uae_s16)(src)) < 0;
  278.     m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xffff) | ((src) & 0xffff);
  279. }}}}}
  280. void REGPARAM2 CPU_OP_NAME(_807c)(uae_u32 opcode) /* OR */
  281. {
  282.     uae_u32 dstreg = (opcode >> 9) & 7;
  283. {{    uae_s16 src = nextiword();
  284. {    uae_s16 dst = m68k_dreg(regs, dstreg);
  285.     src |= dst;
  286.     VFLG = CFLG = 0;
  287.     ZFLG = ((uae_s16)(src)) == 0;
  288.     NFLG = ((uae_s16)(src)) < 0;
  289.     m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xffff) | ((src) & 0xffff);
  290. }}}}
  291. void REGPARAM2 CPU_OP_NAME(_8080)(uae_u32 opcode) /* OR */
  292. {
  293.     uae_u32 srcreg = (opcode & 7);
  294.     uae_u32 dstreg = (opcode >> 9) & 7;
  295. {{    uae_s32 src = m68k_dreg(regs, srcreg);
  296. {    uae_s32 dst = m68k_dreg(regs, dstreg);
  297.     src |= dst;
  298.     VFLG = CFLG = 0;
  299.     ZFLG = ((uae_s32)(src)) == 0;
  300.     NFLG = ((uae_s32)(src)) < 0;
  301.     m68k_dreg(regs, dstreg) = (src);
  302. }}}}
  303. void REGPARAM2 CPU_OP_NAME(_8090)(uae_u32 opcode) /* OR */
  304. {
  305.     uae_u32 srcreg = (opcode & 7);
  306.     uae_u32 dstreg = (opcode >> 9) & 7;
  307. {{    uaecptr srca = m68k_areg(regs, srcreg);
  308.     uae_s32 src = get_long(srca);
  309. {    uae_s32 dst = m68k_dreg(regs, dstreg);
  310.     src |= dst;
  311.     VFLG = CFLG = 0;
  312.     ZFLG = ((uae_s32)(src)) == 0;
  313.     NFLG = ((uae_s32)(src)) < 0;
  314.     m68k_dreg(regs, dstreg) = (src);
  315. }}}}
  316. void REGPARAM2 CPU_OP_NAME(_8098)(uae_u32 opcode) /* OR */
  317. {
  318.     uae_u32 srcreg = (opcode & 7);
  319.     uae_u32 dstreg = (opcode >> 9) & 7;
  320. {{    uaecptr srca = m68k_areg(regs, srcreg);
  321.     uae_s32 src = get_long(srca);
  322. {    m68k_areg(regs, srcreg) += 4;
  323. {    uae_s32 dst = m68k_dreg(regs, dstreg);
  324.     src |= dst;
  325.     VFLG = CFLG = 0;
  326.     ZFLG = ((uae_s32)(src)) == 0;
  327.     NFLG = ((uae_s32)(src)) < 0;
  328.     m68k_dreg(regs, dstreg) = (src);
  329. }}}}}
  330. void REGPARAM2 CPU_OP_NAME(_80a0)(uae_u32 opcode) /* OR */
  331. {
  332.     uae_u32 srcreg = (opcode & 7);
  333.     uae_u32 dstreg = (opcode >> 9) & 7;
  334. {{    m68k_areg(regs, srcreg) -= 4;
  335. {    uaecptr srca = m68k_areg(regs, srcreg);
  336.     uae_s32 src = get_long(srca);
  337. {    uae_s32 dst = m68k_dreg(regs, dstreg);
  338.     src |= dst;
  339.     VFLG = CFLG = 0;
  340.     ZFLG = ((uae_s32)(src)) == 0;
  341.     NFLG = ((uae_s32)(src)) < 0;
  342.     m68k_dreg(regs, dstreg) = (src);
  343. }}}}}
  344. void REGPARAM2 CPU_OP_NAME(_80a8)(uae_u32 opcode) /* OR */
  345. {
  346.     uae_u32 srcreg = (opcode & 7);
  347.     uae_u32 dstreg = (opcode >> 9) & 7;
  348. {{    uaecptr srca = m68k_areg(regs, srcreg) + (uae_s32)(uae_s16)nextiword();
  349.     uae_s32 src = get_long(srca);
  350. {    uae_s32 dst = m68k_dreg(regs, dstreg);
  351.     src |= dst;
  352.     VFLG = CFLG = 0;
  353.     ZFLG = ((uae_s32)(src)) == 0;
  354.     NFLG = ((uae_s32)(src)) < 0;
  355.     m68k_dreg(regs, dstreg) = (src);
  356. }}}}
  357. void REGPARAM2 CPU_OP_NAME(_80b0)(uae_u32 opcode) /* OR */
  358. {
  359.     uae_u32 srcreg = (opcode & 7);
  360.     uae_u32 dstreg = (opcode >> 9) & 7;
  361. {{    uaecptr srca = get_disp_ea(m68k_areg(regs, srcreg));
  362. {    uae_s32 src = get_long(srca);
  363. {    uae_s32 dst = m68k_dreg(regs, dstreg);
  364.     src |= dst;
  365.     VFLG = CFLG = 0;
  366.     ZFLG = ((uae_s32)(src)) == 0;
  367.     NFLG = ((uae_s32)(src)) < 0;
  368.     m68k_dreg(regs, dstreg) = (src);
  369. }}}}}
  370. void REGPARAM2 CPU_OP_NAME(_80b8)(uae_u32 opcode) /* OR */
  371. {
  372.     uae_u32 dstreg = (opcode >> 9) & 7;
  373. {{    uaecptr srca = (uae_s32)(uae_s16)nextiword();
  374.     uae_s32 src = get_long(srca);
  375. {    uae_s32 dst = m68k_dreg(regs, dstreg);
  376.     src |= dst;
  377.     VFLG = CFLG = 0;
  378.     ZFLG = ((uae_s32)(src)) == 0;
  379.     NFLG = ((uae_s32)(src)) < 0;
  380.     m68k_dreg(regs, dstreg) = (src);
  381. }}}}
  382. void REGPARAM2 CPU_OP_NAME(_80b9)(uae_u32 opcode) /* OR */
  383. {
  384.     uae_u32 dstreg = (opcode >> 9) & 7;
  385. {{    uaecptr srca = nextilong();
  386.     uae_s32 src = get_long(srca);
  387. {    uae_s32 dst = m68k_dreg(regs, dstreg);
  388.     src |= dst;
  389.     VFLG = CFLG = 0;
  390.     ZFLG = ((uae_s32)(src)) == 0;
  391.     NFLG = ((uae_s32)(src)) < 0;
  392.     m68k_dreg(regs, dstreg) = (src);
  393. }}}}
  394. void REGPARAM2 CPU_OP_NAME(_80ba)(uae_u32 opcode) /* OR */
  395. {
  396.     uae_u32 dstreg = (opcode >> 9) & 7;
  397. {{    uaecptr srca = m68k_getpc();
  398.     srca += (uae_s32)(uae_s16)nextiword();
  399. {    uae_s32 src = get_long(srca);
  400. {    uae_s32 dst = m68k_dreg(regs, dstreg);
  401.     src |= dst;
  402.     VFLG = CFLG = 0;
  403.     ZFLG = ((uae_s32)(src)) == 0;
  404.     NFLG = ((uae_s32)(src)) < 0;
  405.     m68k_dreg(regs, dstreg) = (src);
  406. }}}}}
  407. void REGPARAM2 CPU_OP_NAME(_80bb)(uae_u32 opcode) /* OR */
  408. {
  409.     uae_u32 dstreg = (opcode >> 9) & 7;
  410. {{    uaecptr srca = get_disp_ea(m68k_getpc());
  411. {    uae_s32 src = get_long(srca);
  412. {    uae_s32 dst = m68k_dreg(regs, dstreg);
  413.     src |= dst;
  414.     VFLG = CFLG = 0;
  415.     ZFLG = ((uae_s32)(src)) == 0;
  416.     NFLG = ((uae_s32)(src)) < 0;
  417.     m68k_dreg(regs, dstreg) = (src);
  418. }}}}}
  419. void REGPARAM2 CPU_OP_NAME(_80bc)(uae_u32 opcode) /* OR */
  420. {
  421.     uae_u32 dstreg = (opcode >> 9) & 7;
  422. {{    uae_s32 src = nextilong();
  423. {    uae_s32 dst = m68k_dreg(regs, dstreg);
  424.     src |= dst;
  425.     VFLG = CFLG = 0;
  426.     ZFLG = ((uae_s32)(src)) == 0;
  427.     NFLG = ((uae_s32)(src)) < 0;
  428.     m68k_dreg(regs, dstreg) = (src);
  429. }}}}
  430. void REGPARAM2 CPU_OP_NAME(_80c0)(uae_u32 opcode) /* DIVU */
  431. {
  432.     uae_u32 srcreg = (opcode & 7);
  433.     uae_u32 dstreg = (opcode >> 9) & 7;
  434. {    uaecptr oldpc = m68k_getpc();
  435. {    uae_s16 src = m68k_dreg(regs, srcreg);
  436. {    uae_s32 dst = m68k_dreg(regs, dstreg);
  437.     if(src == 0) Exception(5,oldpc-2); else {
  438.     uae_u32 newv = (uae_u32)dst / (uae_u32)(uae_u16)src;
  439.     uae_u32 rem = (uae_u32)dst % (uae_u32)(uae_u16)src;
  440.     if (newv > 0xffff) { VFLG = NFLG = 1; CFLG = 0; } else
  441.     {
  442.     VFLG = CFLG = 0;
  443.     ZFLG = ((uae_s16)(newv)) == 0;
  444.     NFLG = ((uae_s16)(newv)) < 0;
  445.     newv = (newv & 0xffff) | ((uae_u32)rem << 16);
  446.     m68k_dreg(regs, dstreg) = (newv);
  447.     }
  448.     }
  449. }}}}
  450. void REGPARAM2 CPU_OP_NAME(_80d0)(uae_u32 opcode) /* DIVU */
  451. {
  452.     uae_u32 srcreg = (opcode & 7);
  453.     uae_u32 dstreg = (opcode >> 9) & 7;
  454. {    uaecptr oldpc = m68k_getpc();
  455. {    uaecptr srca = m68k_areg(regs, srcreg);
  456.     uae_s16 src = get_word(srca);
  457. {    uae_s32 dst = m68k_dreg(regs, dstreg);
  458.     if(src == 0) Exception(5,oldpc-2); else {
  459.     uae_u32 newv = (uae_u32)dst / (uae_u32)(uae_u16)src;
  460.     uae_u32 rem = (uae_u32)dst % (uae_u32)(uae_u16)src;
  461.     if (newv > 0xffff) { VFLG = NFLG = 1; CFLG = 0; } else
  462.     {
  463.     VFLG = CFLG = 0;
  464.     ZFLG = ((uae_s16)(newv)) == 0;
  465.     NFLG = ((uae_s16)(newv)) < 0;
  466.     newv = (newv & 0xffff) | ((uae_u32)rem << 16);
  467.     m68k_dreg(regs, dstreg) = (newv);
  468.     }
  469.     }
  470. }}}}
  471. void REGPARAM2 CPU_OP_NAME(_80d8)(uae_u32 opcode) /* DIVU */
  472. {
  473.     uae_u32 srcreg = (opcode & 7);
  474.     uae_u32 dstreg = (opcode >> 9) & 7;
  475. {    uaecptr oldpc = m68k_getpc();
  476. {    uaecptr srca = m68k_areg(regs, srcreg);
  477.     uae_s16 src = get_word(srca);
  478. {    m68k_areg(regs, srcreg) += 2;
  479. {    uae_s32 dst = m68k_dreg(regs, dstreg);
  480.     if(src == 0) Exception(5,oldpc-2); else {
  481.     uae_u32 newv = (uae_u32)dst / (uae_u32)(uae_u16)src;
  482.     uae_u32 rem = (uae_u32)dst % (uae_u32)(uae_u16)src;
  483.     if (newv > 0xffff) { VFLG = NFLG = 1; CFLG = 0; } else
  484.     {
  485.     VFLG = CFLG = 0;
  486.     ZFLG = ((uae_s16)(newv)) == 0;
  487.     NFLG = ((uae_s16)(newv)) < 0;
  488.     newv = (newv & 0xffff) | ((uae_u32)rem << 16);
  489.     m68k_dreg(regs, dstreg) = (newv);
  490.     }
  491.     }
  492. }}}}}
  493. void REGPARAM2 CPU_OP_NAME(_80e0)(uae_u32 opcode) /* DIVU */
  494. {
  495.     uae_u32 srcreg = (opcode & 7);
  496.     uae_u32 dstreg = (opcode >> 9) & 7;
  497. {    uaecptr oldpc = m68k_getpc();
  498. {    m68k_areg(regs, srcreg) -= 2;
  499. {    uaecptr srca = m68k_areg(regs, srcreg);
  500.     uae_s16 src = get_word(srca);
  501. {    uae_s32 dst = m68k_dreg(regs, dstreg);
  502.     if(src == 0) Exception(5,oldpc-2); else {
  503.     uae_u32 newv = (uae_u32)dst / (uae_u32)(uae_u16)src;
  504.     uae_u32 rem = (uae_u32)dst % (uae_u32)(uae_u16)src;
  505.     if (newv > 0xffff) { VFLG = NFLG = 1; CFLG = 0; } else
  506.     {
  507.     VFLG = CFLG = 0;
  508.     ZFLG = ((uae_s16)(newv)) == 0;
  509.     NFLG = ((uae_s16)(newv)) < 0;
  510.     newv = (newv & 0xffff) | ((uae_u32)rem << 16);
  511.     m68k_dreg(regs, dstreg) = (newv);
  512.     }
  513.     }
  514. }}}}}
  515. void REGPARAM2 CPU_OP_NAME(_80e8)(uae_u32 opcode) /* DIVU */
  516. {
  517.     uae_u32 srcreg = (opcode & 7);
  518.     uae_u32 dstreg = (opcode >> 9) & 7;
  519. {    uaecptr oldpc = m68k_getpc();
  520. {    uaecptr srca = m68k_areg(regs, srcreg) + (uae_s32)(uae_s16)nextiword();
  521.     uae_s16 src = get_word(srca);
  522. {    uae_s32 dst = m68k_dreg(regs, dstreg);
  523.     if(src == 0) Exception(5,oldpc-2); else {
  524.     uae_u32 newv = (uae_u32)dst / (uae_u32)(uae_u16)src;
  525.     uae_u32 rem = (uae_u32)dst % (uae_u32)(uae_u16)src;
  526.     if (newv > 0xffff) { VFLG = NFLG = 1; CFLG = 0; } else
  527.     {
  528.     VFLG = CFLG = 0;
  529.     ZFLG = ((uae_s16)(newv)) == 0;
  530.     NFLG = ((uae_s16)(newv)) < 0;
  531.     newv = (newv & 0xffff) | ((uae_u32)rem << 16);
  532.     m68k_dreg(regs, dstreg) = (newv);
  533.     }
  534.     }
  535. }}}}
  536. void REGPARAM2 CPU_OP_NAME(_80f0)(uae_u32 opcode) /* DIVU */
  537. {
  538.     uae_u32 srcreg = (opcode & 7);
  539.     uae_u32 dstreg = (opcode >> 9) & 7;
  540. {    uaecptr oldpc = m68k_getpc();
  541. {    uaecptr srca = get_disp_ea(m68k_areg(regs, srcreg));
  542. {    uae_s16 src = get_word(srca);
  543. {    uae_s32 dst = m68k_dreg(regs, dstreg);
  544.     if(src == 0) Exception(5,oldpc-2); else {
  545.     uae_u32 newv = (uae_u32)dst / (uae_u32)(uae_u16)src;
  546.     uae_u32 rem = (uae_u32)dst % (uae_u32)(uae_u16)src;
  547.     if (newv > 0xffff) { VFLG = NFLG = 1; CFLG = 0; } else
  548.     {
  549.     VFLG = CFLG = 0;
  550.     ZFLG = ((uae_s16)(newv)) == 0;
  551.     NFLG = ((uae_s16)(newv)) < 0;
  552.     newv = (newv & 0xffff) | ((uae_u32)rem << 16);
  553.     m68k_dreg(regs, dstreg) = (newv);
  554.     }
  555.     }
  556. }}}}}
  557. void REGPARAM2 CPU_OP_NAME(_80f8)(uae_u32 opcode) /* DIVU */
  558. {
  559.     uae_u32 dstreg = (opcode >> 9) & 7;
  560. {    uaecptr oldpc = m68k_getpc();
  561. {    uaecptr srca = (uae_s32)(uae_s16)nextiword();
  562.     uae_s16 src = get_word(srca);
  563. {    uae_s32 dst = m68k_dreg(regs, dstreg);
  564.     if(src == 0) Exception(5,oldpc-2); else {
  565.     uae_u32 newv = (uae_u32)dst / (uae_u32)(uae_u16)src;
  566.     uae_u32 rem = (uae_u32)dst % (uae_u32)(uae_u16)src;
  567.     if (newv > 0xffff) { VFLG = NFLG = 1; CFLG = 0; } else
  568.     {
  569.     VFLG = CFLG = 0;
  570.     ZFLG = ((uae_s16)(newv)) == 0;
  571.     NFLG = ((uae_s16)(newv)) < 0;
  572.     newv = (newv & 0xffff) | ((uae_u32)rem << 16);
  573.     m68k_dreg(regs, dstreg) = (newv);
  574.     }
  575.     }
  576. }}}}
  577. void REGPARAM2 CPU_OP_NAME(_80f9)(uae_u32 opcode) /* DIVU */
  578. {
  579.     uae_u32 dstreg = (opcode >> 9) & 7;
  580. {    uaecptr oldpc = m68k_getpc();
  581. {    uaecptr srca = nextilong();
  582.     uae_s16 src = get_word(srca);
  583. {    uae_s32 dst = m68k_dreg(regs, dstreg);
  584.     if(src == 0) Exception(5,oldpc-2); else {
  585.     uae_u32 newv = (uae_u32)dst / (uae_u32)(uae_u16)src;
  586.     uae_u32 rem = (uae_u32)dst % (uae_u32)(uae_u16)src;
  587.     if (newv > 0xffff) { VFLG = NFLG = 1; CFLG = 0; } else
  588.     {
  589.     VFLG = CFLG = 0;
  590.     ZFLG = ((uae_s16)(newv)) == 0;
  591.     NFLG = ((uae_s16)(newv)) < 0;
  592.     newv = (newv & 0xffff) | ((uae_u32)rem << 16);
  593.     m68k_dreg(regs, dstreg) = (newv);
  594.     }
  595.     }
  596. }}}}
  597. void REGPARAM2 CPU_OP_NAME(_80fa)(uae_u32 opcode) /* DIVU */
  598. {
  599.     uae_u32 dstreg = (opcode >> 9) & 7;
  600. {    uaecptr oldpc = m68k_getpc();
  601. {    uaecptr srca = m68k_getpc();
  602.     srca += (uae_s32)(uae_s16)nextiword();
  603. {    uae_s16 src = get_word(srca);
  604. {    uae_s32 dst = m68k_dreg(regs, dstreg);
  605.     if(src == 0) Exception(5,oldpc-2); else {
  606.     uae_u32 newv = (uae_u32)dst / (uae_u32)(uae_u16)src;
  607.     uae_u32 rem = (uae_u32)dst % (uae_u32)(uae_u16)src;
  608.     if (newv > 0xffff) { VFLG = NFLG = 1; CFLG = 0; } else
  609.     {
  610.     VFLG = CFLG = 0;
  611.     ZFLG = ((uae_s16)(newv)) == 0;
  612.     NFLG = ((uae_s16)(newv)) < 0;
  613.     newv = (newv & 0xffff) | ((uae_u32)rem << 16);
  614.     m68k_dreg(regs, dstreg) = (newv);
  615.     }
  616.     }
  617. }}}}}
  618. void REGPARAM2 CPU_OP_NAME(_80fb)(uae_u32 opcode) /* DIVU */
  619. {
  620.     uae_u32 dstreg = (opcode >> 9) & 7;
  621. {    uaecptr oldpc = m68k_getpc();
  622. {    uaecptr srca = get_disp_ea(m68k_getpc());
  623. {    uae_s16 src = get_word(srca);
  624. {    uae_s32 dst = m68k_dreg(regs, dstreg);
  625.     if(src == 0) Exception(5,oldpc-2); else {
  626.     uae_u32 newv = (uae_u32)dst / (uae_u32)(uae_u16)src;
  627.     uae_u32 rem = (uae_u32)dst % (uae_u32)(uae_u16)src;
  628.     if (newv > 0xffff) { VFLG = NFLG = 1; CFLG = 0; } else
  629.     {
  630.     VFLG = CFLG = 0;
  631.     ZFLG = ((uae_s16)(newv)) == 0;
  632.     NFLG = ((uae_s16)(newv)) < 0;
  633.     newv = (newv & 0xffff) | ((uae_u32)rem << 16);
  634.     m68k_dreg(regs, dstreg) = (newv);
  635.     }
  636.     }
  637. }}}}}
  638. void REGPARAM2 CPU_OP_NAME(_80fc)(uae_u32 opcode) /* DIVU */
  639. {
  640.     uae_u32 dstreg = (opcode >> 9) & 7;
  641. {    uaecptr oldpc = m68k_getpc();
  642. {    uae_s16 src = nextiword();
  643. {    uae_s32 dst = m68k_dreg(regs, dstreg);
  644.     if(src == 0) Exception(5,oldpc-2); else {
  645.     uae_u32 newv = (uae_u32)dst / (uae_u32)(uae_u16)src;
  646.     uae_u32 rem = (uae_u32)dst % (uae_u32)(uae_u16)src;
  647.     if (newv > 0xffff) { VFLG = NFLG = 1; CFLG = 0; } else
  648.     {
  649.     VFLG = CFLG = 0;
  650.     ZFLG = ((uae_s16)(newv)) == 0;
  651.     NFLG = ((uae_s16)(newv)) < 0;
  652.     newv = (newv & 0xffff) | ((uae_u32)rem << 16);
  653.     m68k_dreg(regs, dstreg) = (newv);
  654.     }
  655.     }
  656. }}}}
  657. void REGPARAM2 CPU_OP_NAME(_8100)(uae_u32 opcode) /* SBCD */
  658. {
  659.     uae_u32 srcreg = (opcode & 7);
  660.     uae_u32 dstreg = (opcode >> 9) & 7;
  661. {{    uae_s8 src = m68k_dreg(regs, srcreg);
  662. {    uae_s8 dst = m68k_dreg(regs, dstreg);
  663. {    uae_u16 newv_lo = (dst & 0xF) - (src & 0xF) - (XFLG ? 1 : 0);
  664.     uae_u16 newv_hi = (dst & 0xF0) - (src & 0xF0);
  665.     uae_u16 newv;
  666.     if (newv_lo > 9) { newv_lo-=6; newv_hi-=0x10; }
  667.     newv = newv_hi + (newv_lo & 0xF);    CFLG = XFLG = (newv_hi & 0x1F0) > 0x90;
  668.     if (CFLG) newv -= 0x60;
  669.     if (((uae_s8)(newv)) != 0) ZFLG = 0;
  670.     NFLG = ((uae_s8)(newv)) < 0;
  671. {    int flgs = ((uae_s8)(src)) < 0;
  672.     int flgo = ((uae_s8)(dst)) < 0;
  673.     int flgn = ((uae_s8)(newv)) < 0;
  674.     VFLG = (flgs != flgo) && (flgn != flgo);
  675.     m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xff) | ((newv) & 0xff);
  676. }}}}}}
  677. void REGPARAM2 CPU_OP_NAME(_8108)(uae_u32 opcode) /* SBCD */
  678. {
  679.     uae_u32 srcreg = (opcode & 7);
  680.     uae_u32 dstreg = (opcode >> 9) & 7;
  681. {{    m68k_areg(regs, srcreg) -= areg_byteinc[srcreg];
  682. {    uaecptr srca = m68k_areg(regs, srcreg);
  683.     uae_s8 src = get_byte(srca);
  684. {    m68k_areg(regs, dstreg) -= areg_byteinc[dstreg];
  685. {    uaecptr dsta = m68k_areg(regs, dstreg);
  686.     uae_s8 dst = get_byte(dsta);
  687. {    uae_u16 newv_lo = (dst & 0xF) - (src & 0xF) - (XFLG ? 1 : 0);
  688.     uae_u16 newv_hi = (dst & 0xF0) - (src & 0xF0);
  689.     uae_u16 newv;
  690.     if (newv_lo > 9) { newv_lo-=6; newv_hi-=0x10; }
  691.     newv = newv_hi + (newv_lo & 0xF);    CFLG = XFLG = (newv_hi & 0x1F0) > 0x90;
  692.     if (CFLG) newv -= 0x60;
  693.     if (((uae_s8)(newv)) != 0) ZFLG = 0;
  694.     NFLG = ((uae_s8)(newv)) < 0;
  695. {    int flgs = ((uae_s8)(src)) < 0;
  696.     int flgo = ((uae_s8)(dst)) < 0;
  697.     int flgn = ((uae_s8)(newv)) < 0;
  698.     VFLG = (flgs != flgo) && (flgn != flgo);
  699.     put_byte(dsta,newv);
  700. }}}}}}}}
  701. void REGPARAM2 CPU_OP_NAME(_8110)(uae_u32 opcode) /* OR */
  702. {
  703.     uae_u32 srcreg = ((opcode >> 9) & 7);
  704.     uae_u32 dstreg = opcode & 7;
  705. {{    uae_s8 src = m68k_dreg(regs, srcreg);
  706. {    uaecptr dsta = m68k_areg(regs, dstreg);
  707.     uae_s8 dst = get_byte(dsta);
  708.     src |= dst;
  709.     VFLG = CFLG = 0;
  710.     ZFLG = ((uae_s8)(src)) == 0;
  711.     NFLG = ((uae_s8)(src)) < 0;
  712.     put_byte(dsta,src);
  713. }}}}
  714. void REGPARAM2 CPU_OP_NAME(_8118)(uae_u32 opcode) /* OR */
  715. {
  716.     uae_u32 srcreg = ((opcode >> 9) & 7);
  717.     uae_u32 dstreg = opcode & 7;
  718. {{    uae_s8 src = m68k_dreg(regs, srcreg);
  719. {    uaecptr dsta = m68k_areg(regs, dstreg);
  720.     uae_s8 dst = get_byte(dsta);
  721. {    m68k_areg(regs, dstreg) += areg_byteinc[dstreg];
  722.     src |= dst;
  723.     VFLG = CFLG = 0;
  724.     ZFLG = ((uae_s8)(src)) == 0;
  725.     NFLG = ((uae_s8)(src)) < 0;
  726.     put_byte(dsta,src);
  727. }}}}}
  728. void REGPARAM2 CPU_OP_NAME(_8120)(uae_u32 opcode) /* OR */
  729. {
  730.     uae_u32 srcreg = ((opcode >> 9) & 7);
  731.     uae_u32 dstreg = opcode & 7;
  732. {{    uae_s8 src = m68k_dreg(regs, srcreg);
  733. {    m68k_areg(regs, dstreg) -= areg_byteinc[dstreg];
  734. {    uaecptr dsta = m68k_areg(regs, dstreg);
  735.     uae_s8 dst = get_byte(dsta);
  736.     src |= dst;
  737.     VFLG = CFLG = 0;
  738.     ZFLG = ((uae_s8)(src)) == 0;
  739.     NFLG = ((uae_s8)(src)) < 0;
  740.     put_byte(dsta,src);
  741. }}}}}
  742. void REGPARAM2 CPU_OP_NAME(_8128)(uae_u32 opcode) /* OR */
  743. {
  744.     uae_u32 srcreg = ((opcode >> 9) & 7);
  745.     uae_u32 dstreg = opcode & 7;
  746. {{    uae_s8 src = m68k_dreg(regs, srcreg);
  747. {    uaecptr dsta = m68k_areg(regs, dstreg) + (uae_s32)(uae_s16)nextiword();
  748.     uae_s8 dst = get_byte(dsta);
  749.     src |= dst;
  750.     VFLG = CFLG = 0;
  751.     ZFLG = ((uae_s8)(src)) == 0;
  752.     NFLG = ((uae_s8)(src)) < 0;
  753.     put_byte(dsta,src);
  754. }}}}
  755. void REGPARAM2 CPU_OP_NAME(_8130)(uae_u32 opcode) /* OR */
  756. {
  757.     uae_u32 srcreg = ((opcode >> 9) & 7);
  758.     uae_u32 dstreg = opcode & 7;
  759. {{    uae_s8 src = m68k_dreg(regs, srcreg);
  760. {    uaecptr dsta = get_disp_ea(m68k_areg(regs, dstreg));
  761. {    uae_s8 dst = get_byte(dsta);
  762.     src |= dst;
  763.     VFLG = CFLG = 0;
  764.     ZFLG = ((uae_s8)(src)) == 0;
  765.     NFLG = ((uae_s8)(src)) < 0;
  766.     put_byte(dsta,src);
  767. }}}}}
  768. void REGPARAM2 CPU_OP_NAME(_8138)(uae_u32 opcode) /* OR */
  769. {
  770.     uae_u32 srcreg = ((opcode >> 9) & 7);
  771. {{    uae_s8 src = m68k_dreg(regs, srcreg);
  772. {    uaecptr dsta = (uae_s32)(uae_s16)nextiword();
  773.     uae_s8 dst = get_byte(dsta);
  774.     src |= dst;
  775.     VFLG = CFLG = 0;
  776.     ZFLG = ((uae_s8)(src)) == 0;
  777.     NFLG = ((uae_s8)(src)) < 0;
  778.     put_byte(dsta,src);
  779. }}}}
  780. void REGPARAM2 CPU_OP_NAME(_8139)(uae_u32 opcode) /* OR */
  781. {
  782.     uae_u32 srcreg = ((opcode >> 9) & 7);
  783. {{    uae_s8 src = m68k_dreg(regs, srcreg);
  784. {    uaecptr dsta = nextilong();
  785.     uae_s8 dst = get_byte(dsta);
  786.     src |= dst;
  787.     VFLG = CFLG = 0;
  788.     ZFLG = ((uae_s8)(src)) == 0;
  789.     NFLG = ((uae_s8)(src)) < 0;
  790.     put_byte(dsta,src);
  791. }}}}
  792. void REGPARAM2 CPU_OP_NAME(_8150)(uae_u32 opcode) /* OR */
  793. {
  794.     uae_u32 srcreg = ((opcode >> 9) & 7);
  795.     uae_u32 dstreg = opcode & 7;
  796. {{    uae_s16 src = m68k_dreg(regs, srcreg);
  797. {    uaecptr dsta = m68k_areg(regs, dstreg);
  798.     uae_s16 dst = get_word(dsta);
  799.     src |= dst;
  800.     VFLG = CFLG = 0;
  801.     ZFLG = ((uae_s16)(src)) == 0;
  802.     NFLG = ((uae_s16)(src)) < 0;
  803.     put_word(dsta,src);
  804. }}}}
  805. void REGPARAM2 CPU_OP_NAME(_8158)(uae_u32 opcode) /* OR */
  806. {
  807.     uae_u32 srcreg = ((opcode >> 9) & 7);
  808.     uae_u32 dstreg = opcode & 7;
  809. {{    uae_s16 src = m68k_dreg(regs, srcreg);
  810. {    uaecptr dsta = m68k_areg(regs, dstreg);
  811.     uae_s16 dst = get_word(dsta);
  812. {    m68k_areg(regs, dstreg) += 2;
  813.     src |= dst;
  814.     VFLG = CFLG = 0;
  815.     ZFLG = ((uae_s16)(src)) == 0;
  816.     NFLG = ((uae_s16)(src)) < 0;
  817.     put_word(dsta,src);
  818. }}}}}
  819. void REGPARAM2 CPU_OP_NAME(_8160)(uae_u32 opcode) /* OR */
  820. {
  821.     uae_u32 srcreg = ((opcode >> 9) & 7);
  822.     uae_u32 dstreg = opcode & 7;
  823. {{    uae_s16 src = m68k_dreg(regs, srcreg);
  824. {    m68k_areg(regs, dstreg) -= 2;
  825. {    uaecptr dsta = m68k_areg(regs, dstreg);
  826.     uae_s16 dst = get_word(dsta);
  827.     src |= dst;
  828.     VFLG = CFLG = 0;
  829.     ZFLG = ((uae_s16)(src)) == 0;
  830.     NFLG = ((uae_s16)(src)) < 0;
  831.     put_word(dsta,src);
  832. }}}}}
  833. void REGPARAM2 CPU_OP_NAME(_8168)(uae_u32 opcode) /* OR */
  834. {
  835.     uae_u32 srcreg = ((opcode >> 9) & 7);
  836.     uae_u32 dstreg = opcode & 7;
  837. {{    uae_s16 src = m68k_dreg(regs, srcreg);
  838. {    uaecptr dsta = m68k_areg(regs, dstreg) + (uae_s32)(uae_s16)nextiword();
  839.     uae_s16 dst = get_word(dsta);
  840.     src |= dst;
  841.     VFLG = CFLG = 0;
  842.     ZFLG = ((uae_s16)(src)) == 0;
  843.     NFLG = ((uae_s16)(src)) < 0;
  844.     put_word(dsta,src);
  845. }}}}
  846. void REGPARAM2 CPU_OP_NAME(_8170)(uae_u32 opcode) /* OR */
  847. {
  848.     uae_u32 srcreg = ((opcode >> 9) & 7);
  849.     uae_u32 dstreg = opcode & 7;
  850. {{    uae_s16 src = m68k_dreg(regs, srcreg);
  851. {    uaecptr dsta = get_disp_ea(m68k_areg(regs, dstreg));
  852. {    uae_s16 dst = get_word(dsta);
  853.     src |= dst;
  854.     VFLG = CFLG = 0;
  855.     ZFLG = ((uae_s16)(src)) == 0;
  856.     NFLG = ((uae_s16)(src)) < 0;
  857.     put_word(dsta,src);
  858. }}}}}
  859. void REGPARAM2 CPU_OP_NAME(_8178)(uae_u32 opcode) /* OR */
  860. {
  861.     uae_u32 srcreg = ((opcode >> 9) & 7);
  862. {{    uae_s16 src = m68k_dreg(regs, srcreg);
  863. {    uaecptr dsta = (uae_s32)(uae_s16)nextiword();
  864.     uae_s16 dst = get_word(dsta);
  865.     src |= dst;
  866.     VFLG = CFLG = 0;
  867.     ZFLG = ((uae_s16)(src)) == 0;
  868.     NFLG = ((uae_s16)(src)) < 0;
  869.     put_word(dsta,src);
  870. }}}}
  871. void REGPARAM2 CPU_OP_NAME(_8179)(uae_u32 opcode) /* OR */
  872. {
  873.     uae_u32 srcreg = ((opcode >> 9) & 7);
  874. {{    uae_s16 src = m68k_dreg(regs, srcreg);
  875. {    uaecptr dsta = nextilong();
  876.     uae_s16 dst = get_word(dsta);
  877.     src |= dst;
  878.     VFLG = CFLG = 0;
  879.     ZFLG = ((uae_s16)(src)) == 0;
  880.     NFLG = ((uae_s16)(src)) < 0;
  881.     put_word(dsta,src);
  882. }}}}
  883. void REGPARAM2 CPU_OP_NAME(_8190)(uae_u32 opcode) /* OR */
  884. {
  885.     uae_u32 srcreg = ((opcode >> 9) & 7);
  886.     uae_u32 dstreg = opcode & 7;
  887. {{    uae_s32 src = m68k_dreg(regs, srcreg);
  888. {    uaecptr dsta = m68k_areg(regs, dstreg);
  889.     uae_s32 dst = get_long(dsta);
  890.     src |= dst;
  891.     VFLG = CFLG = 0;
  892.     ZFLG = ((uae_s32)(src)) == 0;
  893.     NFLG = ((uae_s32)(src)) < 0;
  894.     put_long(dsta,src);
  895. }}}}
  896. void REGPARAM2 CPU_OP_NAME(_8198)(uae_u32 opcode) /* OR */
  897. {
  898.     uae_u32 srcreg = ((opcode >> 9) & 7);
  899.     uae_u32 dstreg = opcode & 7;
  900. {{    uae_s32 src = m68k_dreg(regs, srcreg);
  901. {    uaecptr dsta = m68k_areg(regs, dstreg);
  902.     uae_s32 dst = get_long(dsta);
  903. {    m68k_areg(regs, dstreg) += 4;
  904.     src |= dst;
  905.     VFLG = CFLG = 0;
  906.     ZFLG = ((uae_s32)(src)) == 0;
  907.     NFLG = ((uae_s32)(src)) < 0;
  908.     put_long(dsta,src);
  909. }}}}}
  910. void REGPARAM2 CPU_OP_NAME(_81a0)(uae_u32 opcode) /* OR */
  911. {
  912.     uae_u32 srcreg = ((opcode >> 9) & 7);
  913.     uae_u32 dstreg = opcode & 7;
  914. {{    uae_s32 src = m68k_dreg(regs, srcreg);
  915. {    m68k_areg(regs, dstreg) -= 4;
  916. {    uaecptr dsta = m68k_areg(regs, dstreg);
  917.     uae_s32 dst = get_long(dsta);
  918.     src |= dst;
  919.     VFLG = CFLG = 0;
  920.     ZFLG = ((uae_s32)(src)) == 0;
  921.     NFLG = ((uae_s32)(src)) < 0;
  922.     put_long(dsta,src);
  923. }}}}}
  924. void REGPARAM2 CPU_OP_NAME(_81a8)(uae_u32 opcode) /* OR */
  925. {
  926.     uae_u32 srcreg = ((opcode >> 9) & 7);
  927.     uae_u32 dstreg = opcode & 7;
  928. {{    uae_s32 src = m68k_dreg(regs, srcreg);
  929. {    uaecptr dsta = m68k_areg(regs, dstreg) + (uae_s32)(uae_s16)nextiword();
  930.     uae_s32 dst = get_long(dsta);
  931.     src |= dst;
  932.     VFLG = CFLG = 0;
  933.     ZFLG = ((uae_s32)(src)) == 0;
  934.     NFLG = ((uae_s32)(src)) < 0;
  935.     put_long(dsta,src);
  936. }}}}
  937. void REGPARAM2 CPU_OP_NAME(_81b0)(uae_u32 opcode) /* OR */
  938. {
  939.     uae_u32 srcreg = ((opcode >> 9) & 7);
  940.     uae_u32 dstreg = opcode & 7;
  941. {{    uae_s32 src = m68k_dreg(regs, srcreg);
  942. {    uaecptr dsta = get_disp_ea(m68k_areg(regs, dstreg));
  943. {    uae_s32 dst = get_long(dsta);
  944.     src |= dst;
  945.     VFLG = CFLG = 0;
  946.     ZFLG = ((uae_s32)(src)) == 0;
  947.     NFLG = ((uae_s32)(src)) < 0;
  948.     put_long(dsta,src);
  949. }}}}}
  950. void REGPARAM2 CPU_OP_NAME(_81b8)(uae_u32 opcode) /* OR */
  951. {
  952.     uae_u32 srcreg = ((opcode >> 9) & 7);
  953. {{    uae_s32 src = m68k_dreg(regs, srcreg);
  954. {    uaecptr dsta = (uae_s32)(uae_s16)nextiword();
  955.     uae_s32 dst = get_long(dsta);
  956.     src |= dst;
  957.     VFLG = CFLG = 0;
  958.     ZFLG = ((uae_s32)(src)) == 0;
  959.     NFLG = ((uae_s32)(src)) < 0;
  960.     put_long(dsta,src);
  961. }}}}
  962. void REGPARAM2 CPU_OP_NAME(_81b9)(uae_u32 opcode) /* OR */
  963. {
  964.     uae_u32 srcreg = ((opcode >> 9) & 7);
  965. {{    uae_s32 src = m68k_dreg(regs, srcreg);
  966. {    uaecptr dsta = nextilong();
  967.     uae_s32 dst = get_long(dsta);
  968.     src |= dst;
  969.     VFLG = CFLG = 0;
  970.     ZFLG = ((uae_s32)(src)) == 0;
  971.     NFLG = ((uae_s32)(src)) < 0;
  972.     put_long(dsta,src);
  973. }}}}
  974. void REGPARAM2 CPU_OP_NAME(_81c0)(uae_u32 opcode) /* DIVS */
  975. {
  976.     uae_u32 srcreg = (opcode & 7);
  977.     uae_u32 dstreg = (opcode >> 9) & 7;
  978. {    uaecptr oldpc = m68k_getpc();
  979. {    uae_s16 src = m68k_dreg(regs, srcreg);
  980. {    uae_s32 dst = m68k_dreg(regs, dstreg);
  981.     if(src == 0) Exception(5,oldpc-2); else {
  982.     uae_s32 newv = (uae_s32)dst / (uae_s32)(uae_s16)src;
  983.     uae_u16 rem = (uae_s32)dst % (uae_s32)(uae_s16)src;
  984.     if ((newv & 0xffff8000) != 0 && (newv & 0xffff8000) != 0xffff8000) { VFLG = NFLG = 1; CFLG = 0; } else
  985.     {
  986.     if (((uae_s16)rem < 0) != ((uae_s32)dst < 0)) rem = -rem;
  987.     VFLG = CFLG = 0;
  988.     ZFLG = ((uae_s16)(newv)) == 0;
  989.     NFLG = ((uae_s16)(newv)) < 0;
  990.     newv = (newv & 0xffff) | ((uae_u32)rem << 16);
  991.     m68k_dreg(regs, dstreg) = (newv);
  992.     }
  993.     }
  994. }}}}
  995. void REGPARAM2 CPU_OP_NAME(_81d0)(uae_u32 opcode) /* DIVS */
  996. {
  997.     uae_u32 srcreg = (opcode & 7);
  998.     uae_u32 dstreg = (opcode >> 9) & 7;
  999. {    uaecptr oldpc = m68k_getpc();
  1000. {    uaecptr srca = m68k_areg(regs, srcreg);
  1001.     uae_s16 src = get_word(srca);
  1002. {    uae_s32 dst = m68k_dreg(regs, dstreg);
  1003.     if(src == 0) Exception(5,oldpc-2); else {
  1004.     uae_s32 newv = (uae_s32)dst / (uae_s32)(uae_s16)src;
  1005.     uae_u16 rem = (uae_s32)dst % (uae_s32)(uae_s16)src;
  1006.     if ((newv & 0xffff8000) != 0 && (newv & 0xffff8000) != 0xffff8000) { VFLG = NFLG = 1; CFLG = 0; } else
  1007.     {
  1008.     if (((uae_s16)rem < 0) != ((uae_s32)dst < 0)) rem = -rem;
  1009.     VFLG = CFLG = 0;
  1010.     ZFLG = ((uae_s16)(newv)) == 0;
  1011.     NFLG = ((uae_s16)(newv)) < 0;
  1012.     newv = (newv & 0xffff) | ((uae_u32)rem << 16);
  1013.     m68k_dreg(regs, dstreg) = (newv);
  1014.     }
  1015.     }
  1016. }}}}
  1017. void REGPARAM2 CPU_OP_NAME(_81d8)(uae_u32 opcode) /* DIVS */
  1018. {
  1019.     uae_u32 srcreg = (opcode & 7);
  1020.     uae_u32 dstreg = (opcode >> 9) & 7;
  1021. {    uaecptr oldpc = m68k_getpc();
  1022. {    uaecptr srca = m68k_areg(regs, srcreg);
  1023.     uae_s16 src = get_word(srca);
  1024. {    m68k_areg(regs, srcreg) += 2;
  1025. {    uae_s32 dst = m68k_dreg(regs, dstreg);
  1026.     if(src == 0) Exception(5,oldpc-2); else {
  1027.     uae_s32 newv = (uae_s32)dst / (uae_s32)(uae_s16)src;
  1028.     uae_u16 rem = (uae_s32)dst % (uae_s32)(uae_s16)src;
  1029.     if ((newv & 0xffff8000) != 0 && (newv & 0xffff8000) != 0xffff8000) { VFLG = NFLG = 1; CFLG = 0; } else
  1030.     {
  1031.     if (((uae_s16)rem < 0) != ((uae_s32)dst < 0)) rem = -rem;
  1032.     VFLG = CFLG = 0;
  1033.     ZFLG = ((uae_s16)(newv)) == 0;
  1034.     NFLG = ((uae_s16)(newv)) < 0;
  1035.     newv = (newv & 0xffff) | ((uae_u32)rem << 16);
  1036.     m68k_dreg(regs, dstreg) = (newv);
  1037.     }
  1038.     }
  1039. }}}}}
  1040. void REGPARAM2 CPU_OP_NAME(_81e0)(uae_u32 opcode) /* DIVS */
  1041. {
  1042.     uae_u32 srcreg = (opcode & 7);
  1043.     uae_u32 dstreg = (opcode >> 9) & 7;
  1044. {    uaecptr oldpc = m68k_getpc();
  1045. {    m68k_areg(regs, srcreg) -= 2;
  1046. {    uaecptr srca = m68k_areg(regs, srcreg);
  1047.     uae_s16 src = get_word(srca);
  1048. {    uae_s32 dst = m68k_dreg(regs, dstreg);
  1049.     if(src == 0) Exception(5,oldpc-2); else {
  1050.     uae_s32 newv = (uae_s32)dst / (uae_s32)(uae_s16)src;
  1051.     uae_u16 rem = (uae_s32)dst % (uae_s32)(uae_s16)src;
  1052.     if ((newv & 0xffff8000) != 0 && (newv & 0xffff8000) != 0xffff8000) { VFLG = NFLG = 1; CFLG = 0; } else
  1053.     {
  1054.     if (((uae_s16)rem < 0) != ((uae_s32)dst < 0)) rem = -rem;
  1055.     VFLG = CFLG = 0;
  1056.     ZFLG = ((uae_s16)(newv)) == 0;
  1057.     NFLG = ((uae_s16)(newv)) < 0;
  1058.     newv = (newv & 0xffff) | ((uae_u32)rem << 16);
  1059.     m68k_dreg(regs, dstreg) = (newv);
  1060.     }
  1061.     }
  1062. }}}}}
  1063. void REGPARAM2 CPU_OP_NAME(_81e8)(uae_u32 opcode) /* DIVS */
  1064. {
  1065.     uae_u32 srcreg = (opcode & 7);
  1066.     uae_u32 dstreg = (opcode >> 9) & 7;
  1067. {    uaecptr oldpc = m68k_getpc();
  1068. {    uaecptr srca = m68k_areg(regs, srcreg) + (uae_s32)(uae_s16)nextiword();
  1069.     uae_s16 src = get_word(srca);
  1070. {    uae_s32 dst = m68k_dreg(regs, dstreg);
  1071.     if(src == 0) Exception(5,oldpc-2); else {
  1072.     uae_s32 newv = (uae_s32)dst / (uae_s32)(uae_s16)src;
  1073.     uae_u16 rem = (uae_s32)dst % (uae_s32)(uae_s16)src;
  1074.     if ((newv & 0xffff8000) != 0 && (newv & 0xffff8000) != 0xffff8000) { VFLG = NFLG = 1; CFLG = 0; } else
  1075.     {
  1076.     if (((uae_s16)rem < 0) != ((uae_s32)dst < 0)) rem = -rem;
  1077.     VFLG = CFLG = 0;
  1078.     ZFLG = ((uae_s16)(newv)) == 0;
  1079.     NFLG = ((uae_s16)(newv)) < 0;
  1080.     newv = (newv & 0xffff) | ((uae_u32)rem << 16);
  1081.     m68k_dreg(regs, dstreg) = (newv);
  1082.     }
  1083.     }
  1084. }}}}
  1085. void REGPARAM2 CPU_OP_NAME(_81f0)(uae_u32 opcode) /* DIVS */
  1086. {
  1087.     uae_u32 srcreg = (opcode & 7);
  1088.     uae_u32 dstreg = (opcode >> 9) & 7;
  1089. {    uaecptr oldpc = m68k_getpc();
  1090. {    uaecptr srca = get_disp_ea(m68k_areg(regs, srcreg));
  1091. {    uae_s16 src = get_word(srca);
  1092. {    uae_s32 dst = m68k_dreg(regs, dstreg);
  1093.     if(src == 0) Exception(5,oldpc-2); else {
  1094.     uae_s32 newv = (uae_s32)dst / (uae_s32)(uae_s16)src;
  1095.     uae_u16 rem = (uae_s32)dst % (uae_s32)(uae_s16)src;
  1096.     if ((newv & 0xffff8000) != 0 && (newv & 0xffff8000) != 0xffff8000) { VFLG = NFLG = 1; CFLG = 0; } else
  1097.     {
  1098.     if (((uae_s16)rem < 0) != ((uae_s32)dst < 0)) rem = -rem;
  1099.     VFLG = CFLG = 0;
  1100.     ZFLG = ((uae_s16)(newv)) == 0;
  1101.     NFLG = ((uae_s16)(newv)) < 0;
  1102.     newv = (newv & 0xffff) | ((uae_u32)rem << 16);
  1103.     m68k_dreg(regs, dstreg) = (newv);
  1104.     }
  1105.     }
  1106. }}}}}
  1107. void REGPARAM2 CPU_OP_NAME(_81f8)(uae_u32 opcode) /* DIVS */
  1108. {
  1109.     uae_u32 dstreg = (opcode >> 9) & 7;
  1110. {    uaecptr oldpc = m68k_getpc();
  1111. {    uaecptr srca = (uae_s32)(uae_s16)nextiword();
  1112.     uae_s16 src = get_word(srca);
  1113. {    uae_s32 dst = m68k_dreg(regs, dstreg);
  1114.     if(src == 0) Exception(5,oldpc-2); else {
  1115.     uae_s32 newv = (uae_s32)dst / (uae_s32)(uae_s16)src;
  1116.     uae_u16 rem = (uae_s32)dst % (uae_s32)(uae_s16)src;
  1117.     if ((newv & 0xffff8000) != 0 && (newv & 0xffff8000) != 0xffff8000) { VFLG = NFLG = 1; CFLG = 0; } else
  1118.     {
  1119.     if (((uae_s16)rem < 0) != ((uae_s32)dst < 0)) rem = -rem;
  1120.     VFLG = CFLG = 0;
  1121.     ZFLG = ((uae_s16)(newv)) == 0;
  1122.     NFLG = ((uae_s16)(newv)) < 0;
  1123.     newv = (newv & 0xffff) | ((uae_u32)rem << 16);
  1124.     m68k_dreg(regs, dstreg) = (newv);
  1125.     }
  1126.     }
  1127. }}}}
  1128. void REGPARAM2 CPU_OP_NAME(_81f9)(uae_u32 opcode) /* DIVS */
  1129. {
  1130.     uae_u32 dstreg = (opcode >> 9) & 7;
  1131. {    uaecptr oldpc = m68k_getpc();
  1132. {    uaecptr srca = nextilong();
  1133.     uae_s16 src = get_word(srca);
  1134. {    uae_s32 dst = m68k_dreg(regs, dstreg);
  1135.     if(src == 0) Exception(5,oldpc-2); else {
  1136.     uae_s32 newv = (uae_s32)dst / (uae_s32)(uae_s16)src;
  1137.     uae_u16 rem = (uae_s32)dst % (uae_s32)(uae_s16)src;
  1138.     if ((newv & 0xffff8000) != 0 && (newv & 0xffff8000) != 0xffff8000) { VFLG = NFLG = 1; CFLG = 0; } else
  1139.     {
  1140.     if (((uae_s16)rem < 0) != ((uae_s32)dst < 0)) rem = -rem;
  1141.     VFLG = CFLG = 0;
  1142.     ZFLG = ((uae_s16)(newv)) == 0;
  1143.     NFLG = ((uae_s16)(newv)) < 0;
  1144.     newv = (newv & 0xffff) | ((uae_u32)rem << 16);
  1145.     m68k_dreg(regs, dstreg) = (newv);
  1146.     }
  1147.     }
  1148. }}}}
  1149. void REGPARAM2 CPU_OP_NAME(_81fa)(uae_u32 opcode) /* DIVS */
  1150. {
  1151.     uae_u32 dstreg = (opcode >> 9) & 7;
  1152. {    uaecptr oldpc = m68k_getpc();
  1153. {    uaecptr srca = m68k_getpc();
  1154.     srca += (uae_s32)(uae_s16)nextiword();
  1155. {    uae_s16 src = get_word(srca);
  1156. {    uae_s32 dst = m68k_dreg(regs, dstreg);
  1157.     if(src == 0) Exception(5,oldpc-2); else {
  1158.     uae_s32 newv = (uae_s32)dst / (uae_s32)(uae_s16)src;
  1159.     uae_u16 rem = (uae_s32)dst % (uae_s32)(uae_s16)src;
  1160.     if ((newv & 0xffff8000) != 0 && (newv & 0xffff8000) != 0xffff8000) { VFLG = NFLG = 1; CFLG = 0; } else
  1161.     {
  1162.     if (((uae_s16)rem < 0) != ((uae_s32)dst < 0)) rem = -rem;
  1163.     VFLG = CFLG = 0;
  1164.     ZFLG = ((uae_s16)(newv)) == 0;
  1165.     NFLG = ((uae_s16)(newv)) < 0;
  1166.     newv = (newv & 0xffff) | ((uae_u32)rem << 16);
  1167.     m68k_dreg(regs, dstreg) = (newv);
  1168.     }
  1169.     }
  1170. }}}}}
  1171. void REGPARAM2 CPU_OP_NAME(_81fb)(uae_u32 opcode) /* DIVS */
  1172. {
  1173.     uae_u32 dstreg = (opcode >> 9) & 7;
  1174. {    uaecptr oldpc = m68k_getpc();
  1175. {    uaecptr srca = get_disp_ea(m68k_getpc());
  1176. {    uae_s16 src = get_word(srca);
  1177. {    uae_s32 dst = m68k_dreg(regs, dstreg);
  1178.     if(src == 0) Exception(5,oldpc-2); else {
  1179.     uae_s32 newv = (uae_s32)dst / (uae_s32)(uae_s16)src;
  1180.     uae_u16 rem = (uae_s32)dst % (uae_s32)(uae_s16)src;
  1181.     if ((newv & 0xffff8000) != 0 && (newv & 0xffff8000) != 0xffff8000) { VFLG = NFLG = 1; CFLG = 0; } else
  1182.     {
  1183.     if (((uae_s16)rem < 0) != ((uae_s32)dst < 0)) rem = -rem;
  1184.     VFLG = CFLG = 0;
  1185.     ZFLG = ((uae_s16)(newv)) == 0;
  1186.     NFLG = ((uae_s16)(newv)) < 0;
  1187.     newv = (newv & 0xffff) | ((uae_u32)rem << 16);
  1188.     m68k_dreg(regs, dstreg) = (newv);
  1189.     }
  1190.     }
  1191. }}}}}
  1192. void REGPARAM2 CPU_OP_NAME(_81fc)(uae_u32 opcode) /* DIVS */
  1193. {
  1194.     uae_u32 dstreg = (opcode >> 9) & 7;
  1195. {    uaecptr oldpc = m68k_getpc();
  1196. {    uae_s16 src = nextiword();
  1197. {    uae_s32 dst = m68k_dreg(regs, dstreg);
  1198.     if(src == 0) Exception(5,oldpc-2); else {
  1199.     uae_s32 newv = (uae_s32)dst / (uae_s32)(uae_s16)src;
  1200.     uae_u16 rem = (uae_s32)dst % (uae_s32)(uae_s16)src;
  1201.     if ((newv & 0xffff8000) != 0 && (newv & 0xffff8000) != 0xffff8000) { VFLG = NFLG = 1; CFLG = 0; } else
  1202.     {
  1203.     if (((uae_s16)rem < 0) != ((uae_s32)dst < 0)) rem = -rem;
  1204.     VFLG = CFLG = 0;
  1205.     ZFLG = ((uae_s16)(newv)) == 0;
  1206.     NFLG = ((uae_s16)(newv)) < 0;
  1207.     newv = (newv & 0xffff) | ((uae_u32)rem << 16);
  1208.     m68k_dreg(regs, dstreg) = (newv);
  1209.     }
  1210.     }
  1211. }}}}
  1212. #endif
  1213.